package reversePrint;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

public class Solution {
    public class ListNode {
      int val;
      ListNode next;
      ListNode(int x) { val = x; }
  }
    public int[] reversePrint(ListNode head) {
        // 从尾到头打印链表
        // 先访问下一个节点 再添加值
        List<Integer> list = new ArrayList<>();
        search(head,list);
        int[] ans = new int[list.size()];
        for (int i = 0; i < ans.length; i++) {
            ans[i] = list.get(i);
        }
        return ans;
    }
    private void search (ListNode p,List<Integer> ans) {
        // 先访问根节点 再访问值
        if(p == null) return;
        search(p.next,ans);
        ans.add(p.val);
    }
//    private void dfs (ListNode p,List<Integer> ans) {
//        if( p == null ) return;
//        dfs(p.next,ans);
//        ans.add(p.val);
//    }

}
